home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / COMAL / B-Book Series / (k)b5.d64 / quicksort.l < prev    next >
Text File  |  2007-02-28  |  830b  |  26 lines

  1. 9000 //
  2. 9010 // 3 QUICKSORT ROUTINES FOLLOW:
  3. 9020 //
  4. 9030 PROC QUICKSORT(REF A$(),LEFT',RIGHT',RECLEN) CLOSED
  5. 9040 DIM PIVOT$ OF RECLEN, BUFFER$ OF RECLEN
  6. 9050 PARTITION(LEFT',RIGHT',LEFT',RIGHT') // SORT A$(LEFT':RIGHT')
  7. 9060 ENDPROC QUICKSORT
  8. 9070 //
  9. 9080 PROC PARTITION(LEFT',RIGHT',I,J) 
  10. 9090 PIVOT$:=A$((LEFT'+RIGHT') DIV 2) // GET MIDDLE ELEMENT AS PIVOT
  11. 9100 REPEAT  // PERFORM SWAPPINGS
  12. 9110 WHILE PIVOT$>A$(I) DO I:+1
  13. 9120 WHILE PIVOT$<A$(J) DO J:-1
  14. 9130 IF I<=J THEN SWAP(A$(I),A$(J)); I:+1; J:-1
  15. 9140 UNTIL I>J
  16. 9150 IF LEFT'<J THEN PARTITION(LEFT',J,LEFT',J) // SORT A$(LEFT':J)
  17. 9160 IF I<RIGHT' THEN PARTITION(I,RIGHT',I,RIGHT') // SORT A$(I:RIGHT')
  18. 9170 ENDPROC PARTITION
  19. 9180 //
  20. 9190 PROC SWAP(REF A$,REF B$) 
  21. 9200 BUFFER$:=A$; A$:=B$; B$:=BUFFER$
  22. 9210 ENDPROC SWAP
  23. 9220 //
  24. 9230 // END OF QUICKSORT ROUTINES
  25. 9240 //
  26.